/*
 * create:2016年4月16日 下午12:49:31
 * author:wangds  
 */

package net.wangds.common.processor;

import net.wangds.common.GeneralParentObject;

/**
 * .
 * 
 * @author wangds
 *
 */
public abstract class AbstractInputOutputProcessor<I, O>
    extends GeneralParentObject implements InputOutputProcessor<I, O> {

  private I input;
  private O output;

  /*
   * @see net.wangds.common.processor.InputProcessor#setIntput(java.lang.Object)
   * 
   * @author wangds 2016年4月16日 下午12:33:59.
   */
  @Override
  public void setIntput(I input) {
    this.input = input;
  }

  protected I getInput() {
    return this.input;
  }

  /*
   * @see net.wangds.common.processor.ResultContainer#getResult()
   * 
   * @author wangds 2016年4月16日 下午12:33:59.
   */
  @Override
  public O getResult() {
    return output;
  }

  /*
   * @see
   * net.wangds.common.processor.ResultContainer#setResult(java.lang.Object)
   * 
   * @author wangds 2016年4月16日 下午12:33:59.
   */
  @Override
  public void setResult(O output) {
    this.output = output;
  }
  
  /*
   * @see net.wangds.common.processor.Processor#process()
   * @author wangds 2016年4月16日 下午12:57:58.
   */
  @Override
  public void process() throws Exception {
    this.setResult(process(this.getInput()));
  }

  /**
   * .
   * @author wangds 2016年4月16日 下午12:58:28.
   * @param input2
   * @return
   */
  protected abstract O process(I input2) throws Exception;

}
